package mark.tom.fiter.constants;

import androidx.annotation.IntDef;

import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;

import static java.net.HttpURLConnection.HTTP_BAD_GATEWAY;
import static java.net.HttpURLConnection.HTTP_BAD_METHOD;
import static java.net.HttpURLConnection.HTTP_BAD_REQUEST;
import static java.net.HttpURLConnection.HTTP_CLIENT_TIMEOUT;
import static java.net.HttpURLConnection.HTTP_CONFLICT;
import static java.net.HttpURLConnection.HTTP_ENTITY_TOO_LARGE;
import static java.net.HttpURLConnection.HTTP_FORBIDDEN;
import static java.net.HttpURLConnection.HTTP_GATEWAY_TIMEOUT;
import static java.net.HttpURLConnection.HTTP_GONE;
import static java.net.HttpURLConnection.HTTP_INTERNAL_ERROR;
import static java.net.HttpURLConnection.HTTP_LENGTH_REQUIRED;
import static java.net.HttpURLConnection.HTTP_MOVED_PERM;
import static java.net.HttpURLConnection.HTTP_MOVED_TEMP;
import static java.net.HttpURLConnection.HTTP_MULT_CHOICE;
import static java.net.HttpURLConnection.HTTP_NOT_ACCEPTABLE;
import static java.net.HttpURLConnection.HTTP_NOT_FOUND;
import static java.net.HttpURLConnection.HTTP_NOT_IMPLEMENTED;
import static java.net.HttpURLConnection.HTTP_NOT_MODIFIED;
import static java.net.HttpURLConnection.HTTP_OK;
import static java.net.HttpURLConnection.HTTP_PAYMENT_REQUIRED;
import static java.net.HttpURLConnection.HTTP_PRECON_FAILED;
import static java.net.HttpURLConnection.HTTP_PROXY_AUTH;
import static java.net.HttpURLConnection.HTTP_REQ_TOO_LONG;
import static java.net.HttpURLConnection.HTTP_SEE_OTHER;
import static java.net.HttpURLConnection.HTTP_UNAUTHORIZED;
import static java.net.HttpURLConnection.HTTP_UNAVAILABLE;
import static java.net.HttpURLConnection.HTTP_UNSUPPORTED_TYPE;
import static java.net.HttpURLConnection.HTTP_USE_PROXY;
import static java.net.HttpURLConnection.HTTP_VERSION;
import static mark.tom.fiter.constants.StatusCodeConstants.CONNECT_ERROR_CODE;
import static mark.tom.fiter.constants.StatusCodeConstants.SOCKET_TIMEOUT_ERROR_CODE;
import static mark.tom.fiter.constants.StatusCodeConstants.UNKNOWN_ERROR_CODE;
import static mark.tom.fiter.constants.StatusCodeConstants.UNKNOWN_HOST_ERROR_CODE;
import static mark.tom.fiter.constants.StatusCodeConstants.UNKNOWN_SERVICE_ERROR_CODE;

@IntDef({
        HTTP_OK,
        HTTP_MULT_CHOICE,
        HTTP_MOVED_PERM,
        HTTP_MOVED_TEMP,
        HTTP_SEE_OTHER,
        HTTP_NOT_MODIFIED,
        HTTP_USE_PROXY,
        HTTP_BAD_REQUEST,
        HTTP_UNAUTHORIZED,
        HTTP_PAYMENT_REQUIRED,
        HTTP_FORBIDDEN,
        HTTP_NOT_FOUND,
        HTTP_BAD_METHOD,
        HTTP_NOT_ACCEPTABLE,
        HTTP_PROXY_AUTH,
        HTTP_CLIENT_TIMEOUT,
        HTTP_CONFLICT,
        HTTP_GONE,
        HTTP_LENGTH_REQUIRED,
        HTTP_PRECON_FAILED,
        HTTP_ENTITY_TOO_LARGE,
        HTTP_REQ_TOO_LONG,
        HTTP_UNSUPPORTED_TYPE,
        HTTP_INTERNAL_ERROR,
        HTTP_NOT_IMPLEMENTED,
        HTTP_BAD_GATEWAY,
        HTTP_UNAVAILABLE,
        HTTP_GATEWAY_TIMEOUT,
        HTTP_VERSION,
        UNKNOWN_ERROR_CODE,
        SOCKET_TIMEOUT_ERROR_CODE,
        CONNECT_ERROR_CODE,
        UNKNOWN_HOST_ERROR_CODE,
        UNKNOWN_SERVICE_ERROR_CODE,
})
@Retention(RetentionPolicy.SOURCE)
public @interface StatusCodeEnums {
}
